package ae.pcfc.etks.online.web.model;

import java.util.Date;
import java.util.List;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import ae.pcfc.etks.online.common.vo.UploadDocumentVO;
import ae.pcfc.etks.online.web.common.Constants;

public class NonClientPersonRegisterPersonalInfo extends BaseModel {

	@NotEmpty
	String strNameTitle;

	@NotEmpty
	String strCategory;
	
	String strClientCategoryDisplay;

	@NotEmpty
	@Size(max = 50)
	String strNonClientPersonNameENG = "";

	@NotEmpty
	@Size(max = 50)
	String strNonClientPersonNameARB = "";

	List<Integer> iClientRole;

	@NotNull
	Integer iGender;

	@DateTimeFormat(pattern = "dd/MM/yyyy")
	Date strDateOfBirth;

	@Size(max = 30)
	@NotEmpty
	String strCity;

	@NotEmpty
	@Size(max = 30)
	String strCountry;

	@NotEmpty
	@Size(max = 30)
	String strNationality;

	@NotEmpty
	@Size(max = 100)
	String strAddressENG;

	@NotEmpty
	@Size(max = 100)
	String strAddressARB;

	@Size(max = 10)
	String strPOBox;

	@Size(max = 10)
	String strPOBoxLocation;

	@Pattern(regexp = Constants.TEL_REGEXP)
	@Size(max = 20)
	String strTelNoHome;

	@Pattern(regexp = Constants.TEL_REGEXP)
	@Size(max = 20)
	String strTelNoOffice;

	@NotEmpty
	@Pattern(regexp = Constants.TEL_REGEXP)
	@Size(max = 20)
	String strMobNo1;

	@Pattern(regexp = Constants.TEL_REGEXP)
	@Size(max = 20)
	String strMobNo2;

	@Pattern(regexp = Constants.TEL_REGEXP)
	@Size(max = 20)
	String strFaxNo;

	@Pattern(regexp = Constants.URL_REGEXP)
	String strWebsiteURL;

	@Pattern(regexp = Constants.MAIL_REGEXP)
	String strEmailAddress;

	@NotEmpty
	@Size(max = 20)
	String strPassportNo;

	@NotEmpty
	@Size(max = 30)
	String strPassportPlaceOfIssue;

	@DateTimeFormat(pattern = "dd/MM/yyyy")
	Date strPassportDateOfIssue;

	@DateTimeFormat(pattern = "dd/MM/yyyy")
	Date strPassportExpiryDate;

	@Size(max = 50)
	String strEmiratesID;

	@Size(max = 20)
	String strEbdara;

	@Size(max = 20)
	String strVisaNo;

	@DateTimeFormat(pattern = "dd/MM/yyyy")
	Date strVisaExpiryDate;

	@Size(max = 20)
	String strVisaType;

	@Size(max = 300)
	String strRemarks;

	String name;

	List<CommonsMultipartFile> files;

	String strUploadURL;

	String strUploadDocumentType;

	String strLeaseCopyName;

	String strLeaseCopyURL;

	String strContractCopyName;

	String strContractCopyURL;

	String strTitleDisplay;

	String strGenderDisplay;

	String strCountryDisplay;

	String strCityDisplay;

	String strClientRoleDisplay;

	String strVisaTypeDisplay;

	List<UploadDocumentVO> arrDocumentVOs;
	
	String hiddenCityVal;
	
	/**
	 * @return the strTitleDisplay
	 */
	public String getStrTitleDisplay() {
		return strTitleDisplay;
	}

	/**
	 * @param strTitleDisplay
	 *            the strTitleDisplay to set
	 */
	public void setStrTitleDisplay(String strTitleDisplay) {
		this.strTitleDisplay = strTitleDisplay;
	}

	/**
	 * @return the strCategory
	 */
	public String getStrCategory() {
		return strCategory;
	}

	/**
	 * @param strCategory
	 *            the strCategory to set
	 */
	public void setStrCategory(String strCategory) {
		this.strCategory = strCategory;
	}

	/**
	 * @return the strGenderDisplay
	 */
	public String getStrGenderDisplay() {
		return strGenderDisplay;
	}

	/**
	 * @param strGenderDisplay
	 *            the strGenderDisplay to set
	 */
	public void setStrGenderDisplay(String strGenderDisplay) {
		this.strGenderDisplay = strGenderDisplay;
	}

	/**
	 * @return the strCountryDisplay
	 */
	public String getStrCountryDisplay() {
		return strCountryDisplay;
	}

	/**
	 * @param strCountryDisplay
	 *            the strCountryDisplay to set
	 */
	public void setStrCountryDisplay(String strCountryDisplay) {
		this.strCountryDisplay = strCountryDisplay;
	}

	/**
	 * @return the strCityDisplay
	 */
	public String getStrCityDisplay() {
		return strCityDisplay;
	}

	/**
	 * @param strCityDisplay
	 *            the strCityDisplay to set
	 */
	public void setStrCityDisplay(String strCityDisplay) {
		this.strCityDisplay = strCityDisplay;
	}

	/**
	 * @return the strClientRoleDisplay
	 */
	public String getStrClientRoleDisplay() {
		return strClientRoleDisplay;
	}

	/**
	 * @param strClientRoleDisplay
	 *            the strClientRoleDisplay to set
	 */
	public void setStrClientRoleDisplay(String strClientRoleDisplay) {
		this.strClientRoleDisplay = strClientRoleDisplay;
	}

	/**
	 * @return the strVisaTypeDisplay
	 */
	public String getStrVisaTypeDisplay() {
		return strVisaTypeDisplay;
	}

	/**
	 * @param strVisaTypeDisplay
	 *            the strVisaTypeDisplay to set
	 */
	public void setStrVisaTypeDisplay(String strVisaTypeDisplay) {
		this.strVisaTypeDisplay = strVisaTypeDisplay;
	}

	/**
	 * @return the strAddressENG
	 */
	public String getStrAddressENG() {
		return strAddressENG;
	}

	/**
	 * @param strAddressENG
	 *            the strAddressENG to set
	 */
	public void setStrAddressENG(String strAddressENG) {
		this.strAddressENG = strAddressENG;
	}

	/**
	 * @return the strAddressARB
	 */
	public String getStrAddressARB() {
		return strAddressARB;
	}

	/**
	 * @param strAddressARB
	 *            the strAddressARB to set
	 */
	public void setStrAddressARB(String strAddressARB) {
		this.strAddressARB = strAddressARB;
	}

	/**
	 * @return the strPOBox
	 */
	public String getStrPOBox() {
		return strPOBox;
	}

	/**
	 * @param strPOBox
	 *            the strPOBox to set
	 */
	public void setStrPOBox(String strPOBox) {
		this.strPOBox = strPOBox;
	}

	/**
	 * @return the strPOBoxLocation
	 */
	public String getStrPOBoxLocation() {
		return strPOBoxLocation;
	}

	/**
	 * @param strPOBoxLocation
	 *            the strPOBoxLocation to set
	 */
	public void setStrPOBoxLocation(String strPOBoxLocation) {
		this.strPOBoxLocation = strPOBoxLocation;
	}

	/**
	 * @return the strTelNoHome
	 */
	public String getStrTelNoHome() {
		return strTelNoHome;
	}

	/**
	 * @param strTelNoHome
	 *            the strTelNoHome to set
	 */
	public void setStrTelNoHome(String strTelNoHome) {
		this.strTelNoHome = strTelNoHome;
	}

	/**
	 * @return the strTelNoOffice
	 */
	public String getStrTelNoOffice() {
		return strTelNoOffice;
	}

	/**
	 * @param strTelNoOffice
	 *            the strTelNoOffice to set
	 */
	public void setStrTelNoOffice(String strTelNoOffice) {
		this.strTelNoOffice = strTelNoOffice;
	}

	/**
	 * @return the strMobNo1
	 */
	public String getStrMobNo1() {
		return strMobNo1;
	}

	/**
	 * @param strMobNo1
	 *            the strMobNo1 to set
	 */
	public void setStrMobNo1(String strMobNo1) {
		this.strMobNo1 = strMobNo1;
	}

	/**
	 * @return the strMobNo2
	 */
	public String getStrMobNo2() {
		return strMobNo2;
	}

	/**
	 * @param strMobNo2
	 *            the strMobNo2 to set
	 */
	public void setStrMobNo2(String strMobNo2) {
		this.strMobNo2 = strMobNo2;
	}

	/**
	 * @return the strFaxNo
	 */
	public String getStrFaxNo() {
		return strFaxNo;
	}

	/**
	 * @param strFaxNo
	 *            the strFaxNo to set
	 */
	public void setStrFaxNo(String strFaxNo) {
		this.strFaxNo = strFaxNo;
	}

	/**
	 * @return the strWebsiteURL
	 */
	public String getStrWebsiteURL() {
		return strWebsiteURL;
	}

	/**
	 * @param strWebsiteURL
	 *            the strWebsiteURL to set
	 */
	public void setStrWebsiteURL(String strWebsiteURL) {
		this.strWebsiteURL = strWebsiteURL;
	}

	/**
	 * @return the strEmailAddress
	 */
	public String getStrEmailAddress() {
		return strEmailAddress;
	}

	/**
	 * @param strEmailAddress
	 *            the strEmailAddress to set
	 */
	public void setStrEmailAddress(String strEmailAddress) {
		this.strEmailAddress = strEmailAddress;
	}

	/**
	 * @return the strPassportNo
	 */
	public String getStrPassportNo() {
		return strPassportNo;
	}

	/**
	 * @param strPassportNo
	 *            the strPassportNo to set
	 */
	public void setStrPassportNo(String strPassportNo) {
		this.strPassportNo = strPassportNo;
	}

	/**
	 * @return the strPassportPlaceOfIssue
	 */
	public String getStrPassportPlaceOfIssue() {
		return strPassportPlaceOfIssue;
	}

	/**
	 * @param strPassportPlaceOfIssue
	 *            the strPassportPlaceOfIssue to set
	 */
	public void setStrPassportPlaceOfIssue(String strPassportPlaceOfIssue) {
		this.strPassportPlaceOfIssue = strPassportPlaceOfIssue;
	}

	/**
	 * @return the strEmiratesID
	 */
	public String getStrEmiratesID() {
		return strEmiratesID;
	}

	/**
	 * @param strEmiratesID
	 *            the strEmiratesID to set
	 */
	public void setStrEmiratesID(String strEmiratesID) {
		this.strEmiratesID = strEmiratesID;
	}

	/**
	 * @return the strEbdara
	 */
	public String getStrEbdara() {
		return strEbdara;
	}

	/**
	 * @param strEbdara
	 *            the strEbdara to set
	 */
	public void setStrEbdara(String strEbdara) {
		this.strEbdara = strEbdara;
	}

	/**
	 * @return the strVisaNo
	 */
	public String getStrVisaNo() {
		return strVisaNo;
	}

	/**
	 * @param strVisaNo
	 *            the strVisaNo to set
	 */
	public void setStrVisaNo(String strVisaNo) {
		this.strVisaNo = strVisaNo;
	}

	/**
	 * @return the strVisaType
	 */
	public String getStrVisaType() {
		return strVisaType;
	}

	/**
	 * @param strVisaType
	 *            the strVisaType to set
	 */
	public void setStrVisaType(String strVisaType) {
		this.strVisaType = strVisaType;
	}

	/**
	 * @return the strRemarks
	 */
	public String getStrRemarks() {
		return strRemarks;
	}

	/**
	 * @param strRemarks
	 *            the strRemarks to set
	 */
	public void setStrRemarks(String strRemarks) {
		this.strRemarks = strRemarks;
	}

	/**
	 * @return the strLeaseCopyName
	 */
	public String getStrLeaseCopyName() {
		return strLeaseCopyName;
	}

	/**
	 * @param strLeaseCopyName
	 *            the strLeaseCopyName to set
	 */
	public void setStrLeaseCopyName(String strLeaseCopyName) {
		this.strLeaseCopyName = strLeaseCopyName;
	}

	/**
	 * @return the strLeaseCopyURL
	 */
	public String getStrLeaseCopyURL() {
		return strLeaseCopyURL;
	}

	/**
	 * @param strLeaseCopyURL
	 *            the strLeaseCopyURL to set
	 */
	public void setStrLeaseCopyURL(String strLeaseCopyURL) {
		this.strLeaseCopyURL = strLeaseCopyURL;
	}

	/**
	 * @return the strContractCopyName
	 */
	public String getStrContractCopyName() {
		return strContractCopyName;
	}

	/**
	 * @param strContractCopyName
	 *            the strContractCopyName to set
	 */
	public void setStrContractCopyName(String strContractCopyName) {
		this.strContractCopyName = strContractCopyName;
	}

	/**
	 * @return the strContractCopyURL
	 */
	public String getStrContractCopyURL() {
		return strContractCopyURL;
	}

	/**
	 * @param strContractCopyURL
	 *            the strContractCopyURL to set
	 */
	public void setStrContractCopyURL(String strContractCopyURL) {
		this.strContractCopyURL = strContractCopyURL;
	}

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name
	 *            the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @return the files
	 */
	public List<CommonsMultipartFile> getFiles() {
		return files;
	}

	/**
	 * @param files
	 *            the files to set
	 */
	public void setFiles(List<CommonsMultipartFile> files) {
		this.files = files;
	}

	/**
	 * @return the strUploadURL
	 */
	public String getStrUploadURL() {
		return strUploadURL;
	}

	/**
	 * @param strUploadURL
	 *            the strUploadURL to set
	 */
	public void setStrUploadURL(String strUploadURL) {
		this.strUploadURL = strUploadURL;
	}

	/**
	 * @return the strUploadDocumentType
	 */
	public String getStrUploadDocumentType() {
		return strUploadDocumentType;
	}

	/**
	 * @param strUploadDocumentType
	 *            the strUploadDocumentType to set
	 */
	public void setStrUploadDocumentType(String strUploadDocumentType) {
		this.strUploadDocumentType = strUploadDocumentType;
	}

	public String getStrNameTitle() {
		return strNameTitle;
	}

	public void setStrNameTitle(String strNameTitle) {
		this.strNameTitle = strNameTitle;
	}

	/**
	 * @return the strNonClientPersonNameENG
	 */
	public String getStrNonClientPersonNameENG() {
		return strNonClientPersonNameENG;
	}

	/**
	 * @param strNonClientPersonNameENG
	 *            the strNonClientPersonNameENG to set
	 */
	public void setStrNonClientPersonNameENG(String strNonClientPersonNameENG) {
		this.strNonClientPersonNameENG = strNonClientPersonNameENG;
	}

	/**
	 * @return the strNonClientPersonNameARB
	 */
	public String getStrNonClientPersonNameARB() {
		return strNonClientPersonNameARB;
	}

	/**
	 * @param strNonClientPersonNameARB
	 *            the strNonClientPersonNameARB to set
	 */
	public void setStrNonClientPersonNameARB(String strNonClientPersonNameARB) {
		this.strNonClientPersonNameARB = strNonClientPersonNameARB;
	}

	/**
	 * @return the iClientRole
	 */
	public List<Integer> getiClientRole() {
		return iClientRole;
	}

	/**
	 * @param iClientRole
	 *            the iClientRole to set
	 */
	public void setiClientRole(List<Integer> iClientRole) {
		this.iClientRole = iClientRole;
	}

	/**
	 * @return the iGender
	 */
	public Integer getiGender() {
		return iGender;
	}

	/**
	 * @param iGender
	 *            the iGender to set
	 */
	public void setiGender(Integer iGender) {
		this.iGender = iGender;
	}

	/**
	 * @return the strDateOfBirth
	 */
	public Date getStrDateOfBirth() {
		return strDateOfBirth;
	}

	/**
	 * @param strDateOfBirth
	 *            the strDateOfBirth to set
	 */
	public void setStrDateOfBirth(Date strDateOfBirth) {
		this.strDateOfBirth = strDateOfBirth;
	}

	/**
	 * @return the strPassportDateOfIssue
	 */
	public Date getStrPassportDateOfIssue() {
		return strPassportDateOfIssue;
	}

	/**
	 * @param strPassportDateOfIssue
	 *            the strPassportDateOfIssue to set
	 */
	public void setStrPassportDateOfIssue(Date strPassportDateOfIssue) {
		this.strPassportDateOfIssue = strPassportDateOfIssue;
	}

	/**
	 * @return the strPassportExpiryDate
	 */
	public Date getStrPassportExpiryDate() {
		return strPassportExpiryDate;
	}

	/**
	 * @param strPassportExpiryDate
	 *            the strPassportExpiryDate to set
	 */
	public void setStrPassportExpiryDate(Date strPassportExpiryDate) {
		this.strPassportExpiryDate = strPassportExpiryDate;
	}

	/**
	 * @return the strVisaExpiryDate
	 */
	public Date getStrVisaExpiryDate() {
		return strVisaExpiryDate;
	}

	/**
	 * @param strVisaExpiryDate
	 *            the strVisaExpiryDate to set
	 */
	public void setStrVisaExpiryDate(Date strVisaExpiryDate) {
		this.strVisaExpiryDate = strVisaExpiryDate;
	}

	/**
	 * @return the strCountry
	 */
	public String getStrCountry() {
		return strCountry;
	}

	/**
	 * @param strCountry
	 *            the strCountry to set
	 */
	public void setStrCountry(String strCountry) {
		this.strCountry = strCountry;
	}

	/**
	 * @return the strCity
	 */
	public String getStrCity() {
		return strCity;
	}

	/**
	 * @param strCity
	 *            the strCity to set
	 */
	public void setStrCity(String strCity) {
		this.strCity = strCity;
	}

	/**
	 * @return the strNationality
	 */
	public String getStrNationality() {
		return strNationality;
	}

	/**
	 * @param strNationality
	 *            the strNationality to set
	 */
	public void setStrNationality(String strNationality) {
		this.strNationality = strNationality;
	}

	/**
	 * @return the arrDocumentVOs
	 */
	public List<UploadDocumentVO> getArrDocumentVOs() {
		return arrDocumentVOs;
	}

	/**
	 * @param arrDocumentVOs
	 *            the arrDocumentVOs to set
	 */
	public void setArrDocumentVOs(List<UploadDocumentVO> arrDocumentVOs) {
		this.arrDocumentVOs = arrDocumentVOs;
	}

	/**
	 * @return the strClientCategoryDisplay
	 */
	public String getStrClientCategoryDisplay() {
		return strClientCategoryDisplay;
	}

	/**
	 * @param strClientCategoryDisplay
	 *            the strClientCategoryDisplay to set
	 */
	public void setStrClientCategoryDisplay(String strClientCategoryDisplay) {
		this.strClientCategoryDisplay = strClientCategoryDisplay;
	}

	/**
	 * @return the hiddenCityVal
	 */
	public String getHiddenCityVal() {
		return hiddenCityVal;
	}

	/**
	 * @param hiddenCityVal the hiddenCityVal to set
	 */
	public void setHiddenCityVal(String hiddenCityVal) {
		this.hiddenCityVal = hiddenCityVal;
	}

}
